// internal/planner/types/expression.go
package types

// Expression 定义表达式接口
type Expression interface {
	// 返回表达式的结果类型
	ResultType() DataType

	// 返回表达式的字符串表示
	String() string
}

// ExprType 表达式类型枚举
type ExprType int

const (
	ExprUnknown   ExprType = iota
	ExprColumnRef          // 列引用
	ExprLiteral            // 字面量
	ExprBinary             // 二元操作
	ExprFunction           // 函数调用
)

// OpType 运算符类型
type OpType int

const (
	OpUnknown OpType = iota
	// 比较操作符
	OpEqual
	OpNotEqual
	OpLess
	OpLessEqual
	OpGreater
	OpGreaterEqual
	// 逻辑操作符
	OpAnd
	OpOr
	OpNot
	// 算术操作符
	OpAdd
	OpSub
	OpMul
	OpDiv
	OpMod
)
